import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
//每次进入网站，就自动读取local的数据，有就读取，没有就取空数组
// #ifdef H5
var obj = JSON.parse(localStorage.getItem('obj') || '[]')
// #endif




const store = new Vuex.Store({
	state: {
		flag: false,
		// #ifdef H5
		obj: obj
		// #endif

		// #ifdef MP-WEIXIN
		obj: []
		// #endif



	},
	mutations: {
		//点击加入购物车，并把加入购物车的目标的信息转成字符添加到localstorage里面
		addCartState(state, value) {

			let bool = true
			state.obj.forEach(item => {
				if (item.id === value.id) {
					item.nums++
					bool = false
				}
			})

			if (bool) {

				state.obj.push(value)
			}

			// #ifdef H5
			localStorage.setItem('obj', JSON.stringify(state.obj))
			// #endif
		},
		//点击购物车数字增加
		// addCartNum(state, value) {
		// 	state.num = value
		// }

		//根据id改变数字框数字
		changeWebNums(state, value) {
			state.obj.forEach(item => {
				if (item.id == value.id) {
					item.nums = value.val
				}
			})
			// #ifdef H5
			localStorage.setItem('obj', JSON.stringify(state.obj))
			// #endif

		},
		// 单选 根据id点击修改state.obj中的check值
		changeCheck(state, value) {

			// if(!value.flag==false){
			// 	state.flag=false
			// }
			// var flag=state.obj.every(item=>{
			// 	return item.check==true
			// })
			state.obj.forEach(item => {
				if (item.id == value.id) {
					item.check = !value.flag

				}

			})
			//全部子选项全选中，全选按钮也选中，若有个别子选项没选中，全选按钮没选中
			var itemtrue = state.obj.filter(item => {
				return item.check == false
			})
			if (itemtrue.length == 0) {
				state.flag = true
			} else {
				state.flag = false
			}
			// #ifdef H5
			localStorage.setItem('obj', JSON.stringify(state.obj))
			// #endif

		},
		//全选
		allSelect(state, flag) {
			state.flag = !flag
			state.obj.forEach(item => {
				item.check = !flag
				// console.log(item.check)

			})

			// #ifdef H5
			localStorage.setItem('obj', JSON.stringify(state.obj))
			// #endif

		},
		// nums为0时删除
		deleteItem(state, value) {
			// console.log(value)

			if (value == 0) {

				state.obj = state.obj.filter(item => {
					return item.nums !== "0"
				})
			}
		},
		//删除
		deleteSelect(state) {
			var result = state.obj.filter(item => {
				return item.check == false
			})
			state.obj=result
		}
	},
	actions: {},

	getters: {
		//获取state中flag的值
		getStateFlag: state => {
			return state.flag
		},
		//获取state中obj的值
		getStateObj: state => {
			return state.obj
		},
		// 每点击一次加入购物车，购物车图标就加1
		getNums(state) {
			var num = 0
			state.obj.forEach(item => {
				num += item.nums
			})
			return num
		},
		//获取localstorage里面的nums，渲染到数量框组件里面
		getWebNums(state) {
			// 用来存放循环出来需要用到的属性名和属性值
			var o = {}
			state.obj.forEach(item => {
				o[item.id] = item.nums
			})
			return o

		},
		//获取state中的check的布尔值

		getCheck(state) {
			var obj = {}
			state.obj.forEach(item => {
				obj[item.id] = item.check
			})
			return obj
		},
		//计算check：true的商品
		sum(state) {
			var zj = 0
			state.obj.forEach(item => {
				if (item.check === true) {
					zj += item.price * item.nums
				}
			})
			return zj
		}
	}
})
export default store
